import { app, BrowserWindow, ipcMain } from 'electron'
import fs from 'fs';

const exec = require('child_process').execFile;
const os = require('os');
const spawn = require('child_process').spawn;;
const {path} = require('path');


if (process.env.NODE_ENV !== 'development') {
  global.__static = require('path').join(__dirname, '../../../../static').replace(/\\/g, '\\\\')
}

let mainWindow
const winURL = process.env.NODE_ENV === 'development'
  ? `http://localhost:9080`
  : `file://${__dirname}/index.html`

function createWindow () {


  /**
   * Initial window options
   */
  mainWindow = new BrowserWindow({
    height: 600,
    useContentSize: true,
    width: 1200,
    webPreferences: {
      webSecurity: false
    }
  })

  mainWindow.loadURL(winURL)

  mainWindow.webContents.on('did-finish-load', function() {
     mainWindow.webContents.send('ping', 'whoooooooh!');
  })

  //  启动服务
  //  启动服务
  ipcMain.on('start-service', (event, args) => {
    var fun  = function() {
      if(os.type()  === 'Darwin') {
        let spawnObj = spawn( __static + '/FrpsPro/frp.sh' , {
          stdio: 'inherit'
        });
        spawnObj.stdout.on('data', function(chunk) {
           mainWindow.webContents.send('end-success', 'success')
        });

      } else {
        exec(__static + '/FrpsPro/frpc/frpc.exe', function(err, data) {
          if(err){
            mainWindow.webContents.send('end-success', err)
          }
          else{
            console.log("success");
            mainWindow.webContents.send('end-success', "success")
          }
        })
      }

    }
    fun();
  })

  ipcMain.on('update-config', (event, arg) => {
    upConfig(arg)
    fs.readFile(__static + '/FrpsPro/frpc.ini', function(err, data) {
      if(err) {return false;}
      // 读取文件
      let content = data.toString()
      // 删除文件
      fs.unlink(__static + '/FrpsPro/frpc.ini', function(err) {
        if(err) {
          return false;
        }
        // 写入文件
        fs.writeFile(__static + '/FrpsPro/frpc.ini', content.replace(/local_ip(.*)/g,'local_ip = ' + arg ), function(err) {
          if(err) {
              return console.log(err);
          }
          mainWindow.webContents.send("config-success", 'success')
        })
      })
    })
  })
  function upConfig (ip) {
    fs.unlink(__static + '/FrpsPro/config.json', function(err) {
      if(err) {
        return false;
      }
      // 写入文件
      fs.writeFile(__static + '/FrpsPro/config.json', JSON.stringify({ ip: ip }), function(err) {
        if(err) {
          return console.log(err);
        }
      })
    })
  }
  ipcMain.on('get-config', (event, arg) => {
    fs.readFile(__static + '/FrpsPro/config.json', function (err, data) {
      mainWindow.webContents.send("get-config-success",  data.toString())
    })
  })

  mainWindow.on('closed', () => {
    mainWindow = null
  })
}

app.on('ready', createWindow)

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  if (mainWindow === null) {
    createWindow()
  }
})
